Aspects of the present invention relate to software. Other aspects of the present invention relate to software security.
Tampering with software involves unauthorized access and modification to software. Such acts often directly associate with security issues. For example, altering network security software to perform what it is not designed to do may pose a serious threat to network security. Similarly, changing application software that transfers secure data from one computer system so as to expose that secure data may compromise that secure data.
To ensure software integrity, different protection mechanisms have been attempted. The most common practice to protect data access is the use of passwords. With a password based mechanism, an operator who initiates the data (software) access supplies a password which is then authenticated against a matching predetermined password that is either hard coded in the software or stored in, for example, a file on the file system. With a password mechanism, it is assumed that both the operator and the software are trusted parties during data manipulation.
Another approach to secure software access is through access right control. For example, secure software may only be accessed with a certain level of access right such as administrator's privilege. Many Unix systems allow designated software to be executed at a higher level of permission than the default level of permission granted to the current login. Other types of security systems rely on a certificate authority. Such systems implement security measures by allowing a file system to “fingerprint” software at the system administrator's level. Some advanced security systems enforce secure software access based on encryption key management mechanisms.
Conventional approaches to ensuring software and data integrity often depend on the underlying operating system implementation or other hardware components and sometimes require significant installation and maintenance effort. Static encryption key management mechanisms of some conventional approaches to ensure software and data integrity provide static, instead of dynamic, key management, which is inflexible and easier to compromise. Furthermore, the conventional approaches do not provide the means to identify software tampering that has been committed.